package com.example.fileupload.service;

import com.example.common.entity.Result;
import com.example.fileupload.entity.FileChunk;
import com.example.fileupload.entity.FileRecord;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * @author cc
 * @classname FileService
 * @description TODO
 * @date 2022/8/14 10:59
 */
public interface FileService {
    /**
     * 检查文件MD5(文件MD5若已存在进行秒传)
     * @param md5
     * @param fileName
     * @return
     */
    Result<Object> checkFileMd5(String md5, String fileName);

    /**
     * 分片上传/断点续传
     * @param fileChunk
     * @return
     */
    String chunkUpload(FileChunk fileChunk);

    /**
     * 获取文件列表
     * @return
     */
    List<FileRecord> getFiles();

    /**
     * 断点续传完成后上传文件信息进行入库操作
     * @param fileRecord
     * @return
     */
    String saveFile(FileRecord fileRecord);

    /**
     * 文件下载
     * @param request
     * @param response
     * @param id
     * @return
     */
    String download(HttpServletRequest request, HttpServletResponse response, Long id);
}
